package com.caregiver.watch.business.user.dao;


import com.caregiver.watch.business.user.model.po.UserChatWindowInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户聊天窗口信息 数据层
 */
@Mapper
public interface UserChatWindowInfoDao {
    
    /**
     * 查询用户聊天窗口信息列表
     * 
     * @param userChatWindowInfo 用户聊天窗口信息
     * @return 用户聊天窗口信息集合
     */
    List<UserChatWindowInfo> selectUserChatWindowInfoList(UserChatWindowInfo userChatWindowInfo);
    
    /**
     * 通过客户留言窗口ID查询用户聊天窗口信息
     * 
     * @param chatWindowId 客户留言窗口ID
     * @return 用户聊天窗口信息
     */
    UserChatWindowInfo selectUserChatWindowInfoById(Long chatWindowId);
    
    /**
     * 通过用户ID和被照护人ID查询用户聊天窗口信息
     * 
     * @param userId 用户ID
     * @param recipientIds 被照护人ID
     * @return 用户聊天窗口信息
     */
    List<UserChatWindowInfo> queryUserChatWindowInfoByUserAndRecipient(@Param("userId") Long userId,@Param("recipientIds") List<Long> recipientIds);

    /**
     * 通过用户ID和被照护人ID查询用户聊天窗口信息
     *
     * @param userId 用户ID
     * @param recipientId 被照护人ID
     * @return 用户聊天窗口信息
     */
    Long findUserChatWindowIdByUserAndRecipient(@Param("userId") Long userId,@Param("recipientId") Long recipientId);
    
    /**
     * 新增用户聊天窗口信息
     * 
     * @param userChatWindowInfo 用户聊天窗口信息
     * @return 结果
     */
    int insertUserChatWindowInfo(UserChatWindowInfo userChatWindowInfo);
    
    /**
     * 修改用户聊天窗口信息
     * 
     * @param userChatWindowInfo 用户聊天窗口信息
     * @return 结果
     */
    int updateUserChatWindowInfo(UserChatWindowInfo userChatWindowInfo);
    
    /**
     * 删除用户聊天窗口信息
     * 
     * @param chatWindowId 客户留言窗口ID
     * @return 结果
     */
    int deleteUserChatWindowInfoById(Long chatWindowId);
    
    /**
     * 批量删除用户聊天窗口信息
     * 
     * @param chatWindowIds 需要删除的客户留言窗口ID数组
     * @return 结果
     */
    int deleteUserChatWindowInfoByIds(List<Long> chatWindowIds);
}
